package com.muyu.product.service;

import java.util.List;

import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.BrandInfo;
import com.muyu.product.domain.CategoryInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;

/**
 * 品类信息Service接口
 *
 * @author DongZeLiang
 * @date 2024-02-27
 */
public interface CategoryInfoService extends IService<CategoryInfo> {
    /**
     * 查询品类信息列表
     *
     * @param categoryInfo 品类信息
     * @return 品类信息集合
     */
    public List<CategoryInfo> list(CategoryInfo categoryInfo);

    /**
     * 保存
     * @param categoryInfoSaveModel 保存品类模型
     * @return 是否成功
     */
    public boolean save(CategoryInfoSaveModel categoryInfoSaveModel);

    /**
     * 通过品类ID获取父级以上的属性组集合
     * @param categoryId 品类ID
     * @return 父级以上的属性组集合
     */
    List<AttributeGroup> getAttributeGroup (Long categoryId);

    /**
     * 通过品类ID获取父级以上的品牌集合
     * @param categoryId 品类ID
     * @return 父级以上的品牌集合
     */
    List<BrandInfo> getBrand (Long categoryId);

    /**
     * 通过品类ID获取父级以上的属性集合
     * @param categoryId 品类ID
     * @return 父级以上的属性集合
     */
    List<AttributeInfo> getAttribute (Long categoryId);

    /**
     * 通过品类ID获取父级以上的属性、属性组、品牌集合
     * @param categoryId 品类ID
     * @return 父级以上的属性、属性组、品牌集合
     */
    CategoryParentCommonElementResp parentCommonElement (Long categoryId);

    /**
     * 通过品类ID获取品类共有属性
     * @param cateGoryId 品类ID
     * @return 品类共有属性
     */
    CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId);
}
